package com.woniu.atms.mapper;

import com.woniu.atms.entity.G5Schedule;
import com.woniu.atms.entity.G5Ticket;
import com.woniu.atms.entity.G5TicketSite;
import com.woniu.atms.vo.pre.ticket.PreTicketCheckedVO;
import com.woniu.atms.vo.pre.ticket.PreUserTicketVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 张奇
 * @title: UserTicketDao
 * @projectName g5_atms
 * @description:  前台用户车票管理
 * @date 2022/1/19 10:01
 */
public interface UserTicketDao {

    /**
     * 通过id简单的车票信息查询
     * @param id
     * @return
     */
    G5Ticket queryById(Integer id);

    /**
     * 通过订单id查询车票列表
     */
    List<G5Ticket> queryByOrderId(Integer orderId);

    /**
     * 通过车票简单的车票信息查询
     * @param no
     * @return
     */
    G5Ticket queryByNo(String no);

    /**
     * 查询所有车票信息
     * @return
     */
    List<PreUserTicketVO> queryAll();

    /**
     * 查看用户购买的所有车票，根据时间降序
     * @param userId
     * @return
     */
    List<PreUserTicketVO> queryAllByUserId(Integer userId);

    //查看车票具体信息，通过车票ID
    //删除车票

    /**
     * 通过id删除车辆 只能删除已经验票使用的车票
     * @param id
     * @return
     */
    boolean deleteById(Integer id);



    /**
     * 根据是否验票状态查询车票
     * @param
     * @return
     */
    List<PreUserTicketVO> queryChecked(@Param("checked") String  checked,@Param("userId") Integer userId);

    //退票1,修改车票退票状态
    boolean updateReTicket(Integer id);

    //修改时刻车票座位表 座位选定状态
    boolean updateTimeSeatY(Integer tsId);

    //验票后修改车票使用状态
    boolean updateCheckedY(Integer id);

    /**
     * 通过车票id查出 时刻车票座位 信息
     * @param tsId
     * @return
     */
    G5TicketSite queryTSByTSId(Integer tsId);


    /**
     * 通过班次id查询班次
     * @param sId
     * @return
     */
    G5Schedule querySBySId(Integer sId);


}
